package 数组.middle;

import java.util.Arrays;

/**
 * @author Lw中
 * @date 2020/9/15 13:55
 */
public class YiWuSan {

    /**
     * 寻找旋转排序数组中最小值
     * @param nums
     * @return
     */
    public static int findMin(int[] nums) {
        int low = 0, high = nums.length - 1;
        // 堆数组进行排序（方法一：直接用函数进行排序，返回第一个元素）
        // Arrays.sort(nums);
        // 使用二分查找
        while (low < high) {
            // 每一次循环都计算出中间值
            int mid = (low + high) / 2;
            if (nums[mid] < nums[high]) {
                high = mid;
            } else {
                low = mid + 1;
            }
        }
        return nums[low];

    }

    public static void main(String[] args) {
        int[] arr = {3,4,5,1,2};
        int min = findMin(arr);
        System.out.println(min);
    }

}
